//888888888888888888888888888888888888888888888888888888888888888888888888888888888888888
//
//	File		 :	ComboFormattedOutput.cpp
//	Contents	 :	Source file for class CComboFormattedOutput
//	Descrition	 :	Proof of concept: combines both CHTML and CRTF FormattedOutput
//	Creation Date:	22/12/1999
//	Last Modified:	23/12/1999	lg
//	tabs width	 :	every 4 characters
//
//888888888888888888888888888888888888888888888888888888888888888888888888888888888888888


#include <cassert>
#include <stdexcept>
#include <vector>
#include <string>
#include "comboformattedoutput.h"

void CComboFormattedOutput::DoBeginHeader()
{
	CRTFFormattedOutput::DoBeginHeader();
	CHTMLFormattedOutput::DoBeginHeader();
}

void CComboFormattedOutput::DoEndFooter()
{
	CRTFFormattedOutput::DoEndFooter();
	CHTMLFormattedOutput::DoEndFooter();
}

#ifdef _MFC_VER	// mfc specific code to follow
unsigned CComboFormattedOutput::GetClipboardFormat(unsigned i)
{
	assert(i < GetFileFormatCounts());
	unsigned offset = CRTFFormattedOutput::GetFileFormatCounts();
	if (i < offset)
		return CRTFFormattedOutput::GetClipboardFormat(i);
	else
		return CHTMLFormattedOutput::GetClipboardFormat(i - offset);
}
#endif

unsigned CComboFormattedOutput::GetFileFormatCounts()
{
	return	CRTFFormattedOutput::GetFileFormatCounts() +
			CHTMLFormattedOutput::GetFileFormatCounts() - 1;
}

const std::string& CComboFormattedOutput::GetStreamedText(unsigned i)
{
	assert(i < GetFileFormatCounts());
	unsigned offset = CRTFFormattedOutput::GetFileFormatCounts();
	if (i < offset)
		return CRTFFormattedOutput::GetStreamedText(i);
	else
		return CHTMLFormattedOutput::GetStreamedText(i - offset);
}


#ifdef _MFC_VER	// mfc specific code to follow
const std::string& CComboFormattedOutput::GetClipStreamedText(unsigned i)
{
	assert(i < GetFileFormatCounts());
	unsigned offset = CRTFFormattedOutput::GetFileFormatCounts();
	if (i < offset)
		return CRTFFormattedOutput::GetClipStreamedText(i);
	else
		return CHTMLFormattedOutput::GetClipStreamedText(i - offset);
}
#endif

void CComboFormattedOutput::StreamQueuedText()
{
	CRTFFormattedOutput::StreamQueuedText();
	CHTMLFormattedOutput::StreamQueuedText();
}

void CComboFormattedOutput::AddNewLine()
{
	CRTFFormattedOutput::AddNewLine();
	CHTMLFormattedOutput::AddNewLine();
}

void CComboFormattedOutput::AddNewLineAndHalf()
{
	CRTFFormattedOutput::AddNewLineAndHalf();
	CHTMLFormattedOutput::AddNewLineAndHalf();
}

void CComboFormattedOutput::AddDoubleNewLines()
{
	CRTFFormattedOutput::AddDoubleNewLines();
	CHTMLFormattedOutput::AddDoubleNewLines();
}
